#!/bin/bash
driver_file="/usr/local/xTools/downloads/rtw89-main.zip"
driver_file2="/usr/local/xTools/downloads/rtw8852c_fw.bin"
#编译必用软件
function set_compile_software() {
    sudo apt-get update
    sudo apt-get install make gcc  build-essential unzip -y
}
function get_ubuntu_info(){
    #获取系统版本号
    ubuntu_version=$(awk '{print $1 $2}' /etc/issue)
    #获取系统内核版本
    ubuntu_kernel=`uname -r`
    #获取系统主机名
    ubuntu_hostname=`hostname`
    #
    #输出结果
    clear   
    echo "系统版本号：$ubuntu_version"
    echo "系统内核版本：$ubuntu_kernel"
    echo "系统主机名：$ubuntu_hostname"
    #检测网络是否正常
    ping -c 1 -W 1 baidu.com > /dev/null
    if [ $? -eq 0 ]; then
        echo -e "\033[32m网络状态:网络正常\033[0m"
    else
        #红色
        echo -e "\033[31m网络状态:网络异常\033[0m"
        exit 1
    fi
    #检测当前内核是否含有当前的linux-headers
    dpkg -s linux-headers-$ubuntu_kernel > /dev/null
    if [ $? -eq 0 ]; then
        echo -e "\033[32m内核头文件版本:linux-headers-$ubuntu_kernel\033[0m"
    else
        # 红色
        if [ -d "/usr/src/linux-headers-$kernel_info" ]; then
            echo -e "内核头文件版本: $GREEN linux-headers-$kernel_info  $GREEN_NC"
        elif [ -d "/lib/modules/$kernel_info" ]; then
            echo -e "内核头文件版本: $GREEN $kernel_info $GREEN_NC"
        else        
            echo -e "内核头文件缺失:$RED linux-headers-$kernel_info $RED_NC"
            
            # 尝试安装相应的 linux-headers 包
            echo "尝试安装 linux-headers-$kernel_info 包..."
            sudo apt-get install -y linux-headers-$kernel_info
            
            # 再次检查是否安装成功
            dpkg -s linux-headers-$kernel_info > /dev/null
            if [ $? -eq 0 ]; then
                # 绿色显示
                echo -e "\033[32m安装成功:linux-headers-$kernel_info\033[0m"
            else
                # 红色
                echo -e "\033[31m无法安装:linux-headers-$kernel_info\033[0m"
                echo "建议手动解决之后再重新执行脚本,否则影响安装..."
                exit 1
            fi
        fi
    fi
    #判断这个文件夹是否存在 /lib/modules/$ubuntu_kernel-generic/build 
    if [ -d "/lib/modules/$ubuntu_kernel/build" ]; then
        echo -e "\033[32m内核源码目录: /lib/modules/$ubuntu_kernel/build\033[0m"
    else
        #红色
        echo -e "\033[31m内核源码目录不存在: /lib/modules/$ubuntu_kernel/build\033[0m"
        #绿色
        echo "尝试建立软连接..."
        #建立软连接
        sudo ln -s /usr/src/linux-headers-$ubuntu_kernel /lib/modules/$ubuntu_kernel/build
        if [ $? -eq 0 ]; then
            echo -e "\033[32m建立软连接成功: /lib/modules/$ubuntu_kernel/build\033[0m"
        else
            #红色
            echo -e "\033[31m建立软连接失败: /lib/modules/$ubuntu_kernel/build\033[0m"
            echo "建议手动解决之后再重新执行脚本,否则影响安装..."
            exit 1
        fi
    fi
    if mokutil --sb-state | grep -q "enabled"; then
        #黄色警告
        echo -e "安全引导:$GREEN 已启用 $GREEN_NC"
        echo "建议禁用，如果需要禁用安全引导，请输入:b(进入bios)"
        read -p "输入选项: " user_input
        if [[ "${user_input,,}" == "b" || "${user_input,,}" == "B" ]]; then
            #禁用安全引导
            sudo systemctl reboot --firmware-setup
        fi
        exit 0
    fi

}


function install_driver() {
    mkdir -p /tmp/driver 
    # 解压 到tmp目录
    unzip $driver_file -d /tmp/driver
    cd /tmp/driver/rtw89-main
    make -j$(nproc)
    sudo make install

    mkdir -p /lib/firmware/rtw89
    mv $driver_file2 /lib/firmware/rtw89/
    chmod -R 777 /lib/firmware/rtw89
    sudo modprobe -v rtw_8852ce
    rm -rf /tmp/driver
}


function about(){
    echo "
        +--------------------------------------------------------------------------------------------------
        | xTools FOR Linux
        +--------------------------------------------------------------------------------------------------
        | 任务:安装rtl8852be网卡驱动
        +--------------------------------------------------------------------------------------------------
        | 项目地址: https://github.com/lwfinger/rtw89
        +--------------------------------------------------------------------------------------------------
        | 脚本开源地址: https://gitee.com/Liplay-1/x-tools
        +--------------------------------------------------------------------------------------------------
        | 关于：安装脚本由振宇i计算编写,欢迎加入QQ群:951733266
        +--------------------------------------------------------------------------------------------------
        | 🌟 需要重启电脑,如果出现无法使用的情况，请参考开源项目文档解决,以获取帮助和支持。
        +--------------------------------------------------------------------------------------------------
    "
}

function install() {
    get_ubuntu_info
    set_compile_software
    install_driver
    about
}
install